package com.example.managemyself.util;

import android.util.Log;

/**
 * URL验证工具类
 * 用于验证和修复URL格式问题
 */
public class UrlValidator {
    
    private static final String TAG = "UrlValidator";
    private static final String DEFAULT_API_BASE_URL = "http://10.163.78.16:8080/api";
    
    /**
     * 验证并修复API基础URL
     * @param baseUrl 原始URL
     * @return 有效的URL
     */
    public static String validateAndFixApiUrl(String baseUrl) {
        // 检查是否为null或空
        if (baseUrl == null || baseUrl.trim().isEmpty()) {
            Log.w(TAG, "Base URL is null or empty, using default: " + DEFAULT_API_BASE_URL);
            return DEFAULT_API_BASE_URL;
        }
        
        // 去除首尾空白
        baseUrl = baseUrl.trim();
        
        // 检查是否包含协议
        if (!baseUrl.startsWith("http://") && !baseUrl.startsWith("https://")) {
            Log.w(TAG, "Base URL missing protocol, adding http://: " + baseUrl);
            baseUrl = "http://" + baseUrl;
        }
        
        // 移除末尾的斜杠
        if (baseUrl.endsWith("/")) {
            baseUrl = baseUrl.substring(0, baseUrl.length() - 1);
        }
        
        // 验证URL格式
        try {
            java.net.URL url = new java.net.URL(baseUrl);
            Log.d(TAG, "Valid API URL: " + baseUrl);
            return baseUrl;
        } catch (java.net.MalformedURLException e) {
            Log.e(TAG, "Invalid URL format: " + baseUrl + ", using default", e);
            return DEFAULT_API_BASE_URL;
        }
    }
    
    /**
     * 构建完整的API端点URL
     * @param baseUrl 基础URL
     * @param endpoint 端点路径
     * @return 完整的URL
     */
    public static String buildApiUrl(String baseUrl, String endpoint) {
        baseUrl = validateAndFixApiUrl(baseUrl);
        
        // 确保endpoint以斜杠开头
        if (endpoint != null && !endpoint.startsWith("/")) {
            endpoint = "/" + endpoint;
        }
        
        String fullUrl = baseUrl + (endpoint != null ? endpoint : "");
        Log.d(TAG, "Built API URL: " + fullUrl);
        return fullUrl;
    }
    
    /**
     * 检查URL是否有效
     * @param url 要检查的URL
     * @return true if valid, false otherwise
     */
    public static boolean isValidUrl(String url) {
        if (url == null || url.trim().isEmpty()) {
            return false;
        }
        
        try {
            new java.net.URL(url);
            return true;
        } catch (java.net.MalformedURLException e) {
            return false;
        }
    }
} 